package com.zhaohang.cn.zhaohangapp;

import android.app.Application;
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;

import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheEntity;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.cookie.CookieJarImpl;
import com.lzy.okgo.cookie.store.DBCookieStore;
import com.lzy.okgo.https.HttpsUtils;
import com.squareup.leakcanary.LeakCanary;
import com.zhaohang.cn.constant.ConstantUtils;
import com.zhaohang.cn.utils.CrashHandler;
import com.zhaohang.cn.utils.SaveUtils;

import java.util.concurrent.TimeUnit;

import me.leolin.shortcutbadger.ShortcutBadger;
import okhttp3.OkHttpClient;


/**
 * 作者: 赵航
 * 创建时间: 2018/8/11 15:24
 * 描述:
 */
public class CompontApplayCation extends Application {

    public static Context context;
    public static Handler mainHandler;

    @Override
    public void onCreate() {
        super.onCreate();
        context = this;
        mainHandler = new Handler(Looper.getMainLooper());
       //检测内存泄漏
         LeakCanary.install(CompontApplayCation.this);

        initOkGo();
        //异常处理
//        creashDeal();




    }



    private void creashDeal() {
        //获取全局未捕获的异常
        CrashHandler crashHandler = CrashHandler.getInstance();
        crashHandler.init(getApplicationContext());
        //获取异常文件的路径
        String string = SaveUtils.getString(ConstantUtils.CRASHFILE);
        //上传异常文件
        if (!TextUtils.isEmpty(string)) {
//            File dir = new File(string);
//            if (dir.exists()) {
//                OkHttpUtils.post()
//                        .addFile("mFile", "test.txt", dir)//
//                        .url("www.baidu.com")
//                        .build()
//                        .execute(new StringCallback() {
//                            @Override
//                            public void onError(Call call, Exception e, int id) {
//                                //上传文件失败
//                            }
//
//                            @Override
//                            public void onResponse(String response, int id) {
//                                //上传文件成功
//                                SaveUtils.setString("", ConstantUtils.CRASHFILE);
//                            }
//                        });
//            }
        }
    }


    private void initOkGo() {
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        //超时时间设置，默认60秒
        builder.readTimeout(10000L, TimeUnit.MILLISECONDS);      //全局的读取超时时间
        builder.writeTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);     //全局的写入超时时间
        builder.connectTimeout(10000L, TimeUnit.MILLISECONDS);   //全局的连接超时时间

        //自动管理cookie（或者叫session的保持），以下几种任选其一就行
        builder.cookieJar(new CookieJarImpl(new DBCookieStore(this)));              //使用数据库保持cookie，如果cookie不过期，则一直有效
        //https相关设置，以下几种方案根据需要自己设置
        //方法一：信任所有证书,不安全有风险
        HttpsUtils.SSLParams sslParams1 = HttpsUtils.getSslSocketFactory();
        builder.sslSocketFactory(sslParams1.sSLSocketFactory, sslParams1.trustManager);
        // 其他统一的配置
        // 详细说明看GitHub文档：https://github.com/jeasonlzy/
        OkGo.getInstance().init(this)                           //必须调用初始化
                .setOkHttpClient(builder.build())               //建议设置OkHttpClient，不设置会使用默认的
                .setCacheMode(CacheMode.NO_CACHE)               //全局统一缓存模式，默认不使用缓存，可以不传
                .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE)   //全局统一缓存时间，默认永不过期，可以不传
                .setRetryCount(3);                               //全局统一超时重连次数，默认为三次，那么最差的情况会请求4次(一次原始请求，三次重连请求)，不需要可以设置为0

    }

}

